﻿#region File and License Information
/*
<File>
	<Copyright>Copyright © 2009, Daniel Vaughan. All rights reserved.</Copyright>
	<License>
	This file is part of DanielVaughan's Core Library

    DanielVaughan's Core Library is free software: you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    DanielVaughan's Core Library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public License
    along with DanielVaughan's Core Library.  If not, see http://www.gnu.org/licenses/.
	</License>
	<Owner Name="Daniel Vaughan" Email="dbvaughan@gmail.com"/>
	<CreationDate>2010-08-15 13:23:30Z</CreationDate>
</File>
*/
#endregion

using System;
using System.Globalization;
using System.Windows;
using System.Windows.Data;

namespace DanielVaughan.Windows.Converters
{
	/// <summary>
	/// Converts a boolean value to a <see cref="Visibility"/> value, 
	/// and vice versa.
	/// </summary>
	public class BooleanToVisibilityConverter : IValueConverter
	{
		public object Convert(object value, Type targetType,
			object parameter, CultureInfo culture)
		{
			string paramValue = (string)parameter;

			if (value == null || (bool)value)
			{
				return paramValue == "Collapsed"
					? Visibility.Collapsed : Visibility.Visible;
			}

			return paramValue == "Collapsed"
				? Visibility.Visible : Visibility.Collapsed;
		}

		public object ConvertBack(object value, Type targetType,
			object parameter, CultureInfo culture)
		{
			string paramValue = (string)parameter;
			if (value == null || (Visibility)value == Visibility.Visible)
			{
				return paramValue != "Collapsed";
			}

			return paramValue == "Collapsed";
		}
	}
}